/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entities;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author frico
 */
@Entity
@Table(name = "legLEGAJO")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "LegLEGAJO.findAll", query = "SELECT l FROM LegLEGAJO l"),
    @NamedQuery(name = "LegLEGAJO.findByLegajo", query = "SELECT l FROM LegLEGAJO l WHERE l.legajo = :legajo"),
    @NamedQuery(name = "LegLEGAJO.findByApellido", query = "SELECT l FROM LegLEGAJO l WHERE l.apellido = :apellido"),
    @NamedQuery(name = "LegLEGAJO.findByNombre", query = "SELECT l FROM LegLEGAJO l WHERE l.nombre = :nombre"),
    @NamedQuery(name = "LegLEGAJO.findByLegajoAnterior", query = "SELECT l FROM LegLEGAJO l WHERE l.legajoAnterior = :legajoAnterior"),
    @NamedQuery(name = "LegLEGAJO.findByTipoLegajo", query = "SELECT l FROM LegLEGAJO l WHERE l.tipoLegajo = :tipoLegajo"),
    @NamedQuery(name = "LegLEGAJO.findByDocumentoNumero", query = "SELECT l FROM LegLEGAJO l WHERE l.documentoNumero = :documentoNumero"),
    @NamedQuery(name = "LegLEGAJO.findByFechaNacimiento", query = "SELECT l FROM LegLEGAJO l WHERE l.fechaNacimiento = :fechaNacimiento"),
    @NamedQuery(name = "LegLEGAJO.findBySexo", query = "SELECT l FROM LegLEGAJO l WHERE l.sexo = :sexo"),
    @NamedQuery(name = "LegLEGAJO.findByCuil", query = "SELECT l FROM LegLEGAJO l WHERE l.cuil = :cuil"),
    @NamedQuery(name = "LegLEGAJO.findByEstadoCivil", query = "SELECT l FROM LegLEGAJO l WHERE l.estadoCivil = :estadoCivil"),
    @NamedQuery(name = "LegLEGAJO.findByTelefono", query = "SELECT l FROM LegLEGAJO l WHERE l.telefono = :telefono"),
    @NamedQuery(name = "LegLEGAJO.findByEMail", query = "SELECT l FROM LegLEGAJO l WHERE l.eMail = :eMail"),
    @NamedQuery(name = "LegLEGAJO.findByCalle", query = "SELECT l FROM LegLEGAJO l WHERE l.calle = :calle"),
    @NamedQuery(name = "LegLEGAJO.findByNumero", query = "SELECT l FROM LegLEGAJO l WHERE l.numero = :numero"),
    @NamedQuery(name = "LegLEGAJO.findByPisoDepto", query = "SELECT l FROM LegLEGAJO l WHERE l.pisoDepto = :pisoDepto"),
    @NamedQuery(name = "LegLEGAJO.findByLocalidad", query = "SELECT l FROM LegLEGAJO l WHERE l.localidad = :localidad"),
    @NamedQuery(name = "LegLEGAJO.findByCodigoPostal", query = "SELECT l FROM LegLEGAJO l WHERE l.codigoPostal = :codigoPostal"),
    @NamedQuery(name = "LegLEGAJO.findByAnticipoMasivo", query = "SELECT l FROM LegLEGAJO l WHERE l.anticipoMasivo = :anticipoMasivo")})
public class LegLEGAJO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 32)
    @Column(name = "Legajo")
    private String legajo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "Apellido")
    private String apellido;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "Nombre")
    private String nombre;
    @Size(max = 32)
    @Column(name = "LegajoAnterior")
    private String legajoAnterior;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 32)
    @Column(name = "TipoLegajo")
    private String tipoLegajo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 24)
    @Column(name = "DocumentoNumero")
    private String documentoNumero;
    @Basic(optional = false)
    @NotNull
    @Column(name = "FechaNacimiento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNacimiento;
    @Size(max = 32)
    @Column(name = "Sexo")
    private String sexo;
    @Size(max = 20)
    @Column(name = "CUIL")
    private String cuil;
    @Size(max = 32)
    @Column(name = "EstadoCivil")
    private String estadoCivil;
    @Size(max = 64)
    @Column(name = "Telefono")
    private String telefono;
    // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
    @Size(max = 128)
    @Column(name = "eMail")
    private String eMail;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "Calle")
    private String calle;
    @Size(max = 32)
    @Column(name = "Numero")
    private String numero;
    @Size(max = 32)
    @Column(name = "PisoDepto")
    private String pisoDepto;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "Localidad")
    private String localidad;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 24)
    @Column(name = "CodigoPostal")
    private String codigoPostal;
    @Column(name = "AnticipoMasivo")
    private Boolean anticipoMasivo;
    @JoinColumn(name = "DocumentoTipo", referencedColumnName = "Codigo")
    @ManyToOne(optional = false)
    private ImpTIPOINSCRIPCION documentoTipo;
    @JoinColumn(name = "ZonaContribucion", referencedColumnName = "Zona")
    @ManyToOne
    private LegCONTRIBUCIONZONA zonaContribucion;
    @JoinColumn(name = "Pais", referencedColumnName = "Codigo")
    @ManyToOne(optional = false)
    private PaiPAIS pais;
    @JoinColumn(name = "Nacionalidad", referencedColumnName = "Codigo")
    @ManyToOne(optional = false)
    private PaiPAIS nacionalidad;
    @JoinColumns({
        @JoinColumn(name = "Pais", referencedColumnName = "Pais", insertable=false, updatable=false),
        @JoinColumn(name = "Provincia", referencedColumnName = "Codigo")})
    @ManyToOne(optional = false)
    private PaiPROVINCIA paiPROVINCIA;

    public LegLEGAJO() {
    }

    public LegLEGAJO(String legajo) {
        this.legajo = legajo;
    }

    public LegLEGAJO(String legajo, String apellido, String nombre, String tipoLegajo, String documentoNumero, Date fechaNacimiento, String calle, String localidad, String codigoPostal) {
        this.legajo = legajo;
        this.apellido = apellido;
        this.nombre = nombre;
        this.tipoLegajo = tipoLegajo;
        this.documentoNumero = documentoNumero;
        this.fechaNacimiento = fechaNacimiento;
        this.calle = calle;
        this.localidad = localidad;
        this.codigoPostal = codigoPostal;
    }

    public String getLegajo() {
        return legajo;
    }

    public void setLegajo(String legajo) {
        this.legajo = legajo;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getLegajoAnterior() {
        return legajoAnterior;
    }

    public void setLegajoAnterior(String legajoAnterior) {
        this.legajoAnterior = legajoAnterior;
    }

    public String getTipoLegajo() {
        return tipoLegajo;
    }

    public void setTipoLegajo(String tipoLegajo) {
        this.tipoLegajo = tipoLegajo;
    }

    public String getDocumentoNumero() {
        return documentoNumero;
    }

    public void setDocumentoNumero(String documentoNumero) {
        this.documentoNumero = documentoNumero;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getCuil() {
        return cuil;
    }

    public void setCuil(String cuil) {
        this.cuil = cuil;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getEMail() {
        return eMail;
    }

    public void setEMail(String eMail) {
        this.eMail = eMail;
    }

    public String getCalle() {
        return calle;
    }

    public void setCalle(String calle) {
        this.calle = calle;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getPisoDepto() {
        return pisoDepto;
    }

    public void setPisoDepto(String pisoDepto) {
        this.pisoDepto = pisoDepto;
    }

    public String getLocalidad() {
        return localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }

    public String getCodigoPostal() {
        return codigoPostal;
    }

    public void setCodigoPostal(String codigoPostal) {
        this.codigoPostal = codigoPostal;
    }

    public Boolean getAnticipoMasivo() {
        return anticipoMasivo;
    }

    public void setAnticipoMasivo(Boolean anticipoMasivo) {
        this.anticipoMasivo = anticipoMasivo;
    }

    public ImpTIPOINSCRIPCION getDocumentoTipo() {
        return documentoTipo;
    }

    public void setDocumentoTipo(ImpTIPOINSCRIPCION documentoTipo) {
        this.documentoTipo = documentoTipo;
    }

    public LegCONTRIBUCIONZONA getZonaContribucion() {
        return zonaContribucion;
    }

    public void setZonaContribucion(LegCONTRIBUCIONZONA zonaContribucion) {
        this.zonaContribucion = zonaContribucion;
    }

    public PaiPAIS getPais() {
        return pais;
    }

    public void setPais(PaiPAIS pais) {
        this.pais = pais;
    }

    public PaiPAIS getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(PaiPAIS nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public PaiPROVINCIA getPaiPROVINCIA() {
        return paiPROVINCIA;
    }

    public void setPaiPROVINCIA(PaiPROVINCIA paiPROVINCIA) {
        this.paiPROVINCIA = paiPROVINCIA;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (legajo != null ? legajo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof LegLEGAJO)) {
            return false;
        }
        LegLEGAJO other = (LegLEGAJO) object;
        if ((this.legajo == null && other.legajo != null) || (this.legajo != null && !this.legajo.equals(other.legajo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.LegLEGAJO[ legajo=" + legajo + " ]";
    }
    
}
